/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
'use strict'

const fs = require('graceful-fs')

class NodeJsInputFileSystem {
  readdir(path, callback) {
    fs.readdir(path, (err, files) => {
      callback(
        err,
        files &&
          files.map((file) => {
            return file.normalize ? file.normalize('NFC') : file
          })
      )
    })
  }

  readdirSync(path) {
    const files = fs.readdirSync(path)
    return (
      files &&
      files.map((file) => {
        return file.normalize ? file.normalize('NFC') : file
      })
    )
  }
}

const fsMethods = [
  'stat',
  'statSync',
  'readFile',
  'readFileSync',
  'readlink',
  'readlinkSync'
]

for (const key of fsMethods) {
  Object.defineProperty(NodeJsInputFileSystem.prototype, key, {
    configurable: true,
    writable: true,
    value: fs[key].bind(fs)
  })
}

module.exports = NodeJsInputFileSystem
